# 第1题
# global：使用global会影响所以pyenv控制的窗口
# local：使用local只影响当前文件夹和子目录
# shell：使用shell只影响当前会话，一旦会话结束就失效

# 第2题 方法1


def fib1(n):
    a = 0
    b = 1
    if n == 0:
        print(a)
    while a < n:
        print(a)
        a, b = b, a + b


fib1(100)


# 方法2


def fib2(n):
    fiblst = [0, 1]
    while True:
        if n == 0:
            return [0]
        else:
            a = fiblst[-1] + fiblst[-2]
            if a < n:
                fiblst.append(a)
            else:
                return fiblst


print(fib2(100))


def fib(n, a, b):
    print(a)
    a, b = b, a + b
    if a > n:
        return
    return fib(n - 1, a, b)


fib(100, 0, 1)

# 第3题

import random
import string


def activeation_code(n, sample_space=string.ascii_lowercase):
    acts = set()
    while len(acts) < n:
        actstr = ''.join(random.sample(sample_space, k=random.randint(5, 10)))
        acts.add(actstr)

    return acts


a = activeation_code(200)
print(len(a), a)
